package com.ee.chat.common.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ee.chat.common.entity.UserCallLog;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * Mapper接口
 * </p>
 *
 * @author Shane
 * @since 2019-08-23
 */
public interface UserCallLogMapper extends BaseMapper<UserCallLog> {
    /**
     * 通过通话记录
     * @param callId
     * @return
     */
    UserCallLog selectByCallId(@Param("callId") String callId);

    /**
     * 获取主播接通率
     * @param userId
     * @return
     */
    Integer getHostSuccessRate(@Param("userId") Integer userId);

    /**
     * 根据频道查询通话记录
     * @Author Shane
     * @Date 2019/10/2920:00
     * @param
     * @return
     **/
    UserCallLog selectByChannelId(@Param("channelId") String channelId);

    /**
     * 获取指定通话的主播信息
     * @Author Shane
     * @Date 2019/11/1 16:46
     * @param
     * @return
     */
    Map<String, Object> getHoldHostInfo(@Param("channelId") String channelId);

    /**
     * 获取通话明细列表
     * @Author Shane
     * @Date 2020/3/2 17:36
     * @param
     * @return
     */
    List<Map<String, Object>> list(@Param("fromUserId") Integer fromUserId, @Param("toUserId") Integer toUserId,
                                   @Param("callTimeMin") Integer callTimeMin, @Param("callTimeMax") Integer callTimeMax,
                                   @Param("type") Integer type, @Param("vstatus") Integer vstatus,
                                   @Param("beginTime") Date beginTime, @Param("endTime") Date endTime,
                                   @Param("field") String field, @Param("sort") String sort,
                                   @Param("offset") Long offset, @Param("rows") Integer rows);

    int listCount(@Param("fromUserId") Integer fromUserId, @Param("toUserId") Integer toUserId,
                  @Param("callTimeMin") Integer callTimeMin, @Param("callTimeMax") Integer callTimeMax,
                  @Param("type") Integer type, @Param("vstatus") Integer vstatus,
                  @Param("beginTime") Date beginTime, @Param("endTime") Date endTime);

    /**
     * 获取指定时间之前未删除的视频id集合
     * @Author Shane
     * @Date 2020/8/26 22:46
     * @param
     * @return
     */
    List<Map<String, Object>> getDeleteVids(@Param("time") Date time);

}